/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.util.bdfparser.entities.bdf.cards;

import com.comac.ins.isfd.util.bdfparser.entities.bdf.rawdata.RawDataLine;
import lombok.Data;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 基本卡片参数,瘦身后的BaseCard 给到前端预览用
 */
@Data
public class BaseCardVo {

    /**
     * 卡片ID
     */
    private Integer id;

    /**
     * 卡片名称
     */
    private String name;

    /**
     * 卡片字段
     */
    private List<List<String>> fields;

    /**
     * 行数
     */
    private Integer rowNumber;

    /**
     * 根据 BaseCard 构造出 List<BaseCardVo>
     */
    public static void buildBaseCardVoList(List<BaseCardVo> cardVoList,BaseCard baseCard) {
        Integer cardId = baseCard.getId();
        String cardName = baseCard.getName();
        List<RawDataLine> rawDataLines = baseCard.getRawDataLines();
        List<List<String>> fields = baseCard.getFields();
        if (baseCard.getRawDataLines().size() > 1 &&
            baseCard.getRawDataLines().get(0).getLine().trim().endsWith("+") &&
            baseCard.getRawDataLines().get(1).getLine().trim().startsWith("+")) {
            BaseCardVo baseCardVoEndWithPlus = new BaseCardVo();
            baseCardVoEndWithPlus.setId(cardId);
            baseCardVoEndWithPlus.setName(cardName);
            baseCardVoEndWithPlus.setFields(Collections.singletonList(fields.get(0)));
            baseCardVoEndWithPlus.setRowNumber(rawDataLines.get(0).getRowNumber());
            BaseCardVo baseCardVoStartWithPlus = new BaseCardVo();
            baseCardVoStartWithPlus.setId(cardId);
            baseCardVoStartWithPlus.setName(cardName);
            baseCardVoStartWithPlus.setFields(Collections.singletonList(fields.get(1)));
            baseCardVoStartWithPlus.setRowNumber(rawDataLines.get(1).getRowNumber());
            cardVoList.add(baseCardVoEndWithPlus);
            cardVoList.add(baseCardVoStartWithPlus);
        } else {
            BaseCardVo baseCardVo = new BaseCardVo();
            baseCardVo.setId(cardId);
            baseCardVo.setName(cardName);
            baseCardVo.setFields(fields);
            baseCardVo.setRowNumber(rawDataLines.get(0).getRowNumber());
            cardVoList.add(baseCardVo);
        }
    }
}
